import 'package:calf_account/pass/edit_pass.dart';
import 'package:calf_account/pass/edit_logic.dart';
import 'package:calf_account/pass/logic.dart';
import 'package:calf_account/pass/view.dart';
import 'package:calf_account/sign/logic.dart';
import 'package:calf_account/sign/view.dart';
import 'package:flutter/material.dart';
import 'package:flutter/physics.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    globalPullRefreshConfig(context);

    Get.put(SignConfigLogic());
    Get.put(PassLogic());
    Get.put(EditPassLogic());

    return GetMaterialApp(
      getPages: [
        GetPage(name: "/sign", page: () => const SignConfigPage()),
        GetPage(name: "/pass", page: () => const PassPage()),
        GetPage(name: "/addPass", page: () => const AddPassPage()),
      ],
      initialRoute: "/sign",
    );
  }

  ///全局下拉刷新配置
  void globalPullRefreshConfig(BuildContext context) {
    RefreshConfiguration(
      // 配置默认头部指示器,假如你每个页面的头部指示器都一样的话,你需要设置这个
      headerBuilder: () => WaterDropMaterialHeader(
        backgroundColor: Theme.of(context).primaryColor,
      ),
      footerBuilder: () => const ClassicFooter(),
      // 配置默认底部指示器
      headerTriggerDistance: 80.0,
      // 头部触发刷新的越界距离
      springDescription:
          const SpringDescription(stiffness: 170, damping: 16, mass: 1.9),
      // 自定义回弹动画,三个属性值意义请查询flutter api
      maxOverScrollExtent: 100,
      //头部最大可以拖动的范围,如果发生冲出视图范围区域,请设置这个属性
      maxUnderScrollExtent: 0,
      // 底部最大可以拖动的范围
      enableScrollWhenRefreshCompleted: true,
      //这个属性不兼容PageView和TabBarView,如果你特别需要TabBarView左右滑动,你需要把它设置为true
      enableLoadingWhenFailed: true,
      //在加载失败的状态下,用户仍然可以通过手势上拉来触发加载更多
      hideFooterWhenNotFull: false,
      // Viewport不满一屏时,禁用上拉加载更多功能
      enableBallisticLoad: true,
      child: const MaterialApp(), // 可以通过惯性滑动触发加载更多
    );
  }
}
